/*
 * Filename:    AuditDispatchDao.java
 * Copyright:   2014 中国平安保险（集团）股份有限公司 版权所有
 * Company:     平安科技养老险及健康险系统开发部
 * Create at:   2014-11-11
 */
package com.paic.mhis.hcpms.audit.dao;

import java.util.List;

import org.springframework.stereotype.Component;

import com.paic.mhis.hcpms.audit.constants.AuditConstants;
import com.paic.mhis.hcpms.audit.dto.AuditOpinionDTO;
import com.paic.mock.util.StringUtils;
import com.paic.pafa.biz.dao.BaseDAO;

@Component("auditOpinionDao")
public class AuditOpinionDao extends BaseDAO {

	/**
	 * 根据taskType,problemNo,opinionType,isDeleted,dealUserName queryData
	 * 
	 * @param bean
	 * @return
	 */
	public List<AuditOpinionDTO> queryAuditOpinionDTOInfo(AuditOpinionDTO bean) {

		List<AuditOpinionDTO> list = (List<AuditOpinionDTO>) this
				._queryForList("opinoin.queryOpinionInfo", bean);
		return list;

	}

	/**
	 * 动态的更新意见,根据条件去更新的，比较智能话
	 * 
	 * @param bean
	 */
	public void updateAuditOpinionDTOInfo(AuditOpinionDTO bean) {
		this._update("opinoin.updateOpinionDTOInfo", bean);

	}

	/**
	 * 根据事件编码分页加载对应的意见信息
	 * 
	 * @param bean
	 * @return
	 */
	public List<AuditOpinionDTO> queryAuditOpinionDTOByProblemNo(
			AuditOpinionDTO bean) {

		List<AuditOpinionDTO> list = (List<AuditOpinionDTO>) this
				._queryForList("opinoin.getOpinoinList", bean);
		return list;
	}

	/**
	 * 根据事件编码分页加载对应的意见信息
	 * 
	 * @param bean
	 * @return
	 */
	public List<AuditOpinionDTO> queryOpinionDTOByProblemNo(AuditOpinionDTO bean) {

		List<AuditOpinionDTO> list = (List<AuditOpinionDTO>) this
				._queryForList("opinoin.getOpinoinReviewList", bean);
		return list;
	}

	/**
	 * 根据事件编码分页加载对应的意见信息
	 * 
	 * @param bean
	 * @return
	 */
	public List<AuditOpinionDTO> queryOpinions(AuditOpinionDTO bean) {

		List<AuditOpinionDTO> list = (List<AuditOpinionDTO>) this
				._queryForList("opinoin.getOpinoincaseList", bean);
		return list;
	}

	/**
	 * 根据事件编码分页加载对应的意见信息
	 * 
	 * @param bean
	 * @return
	 */
	public List<AuditOpinionDTO> queryOpinionList(AuditOpinionDTO bean) {

		List<AuditOpinionDTO> list = (List<AuditOpinionDTO>) this
				._queryForList("opinoin.getOpinoincases", bean);
		return list;
	}

	/**
	 * 添加意见信息
	 * 
	 * @param bean
	 * @return
	 */
	public void addOpinion(AuditOpinionDTO bean) {
		if (!StringUtils.hasText(bean.getIsDeleted())) {
			bean.setIsDeleted(AuditConstants.isDeleted);
		}
		this._insert("opinoin.insertOpinoin", bean);

	}

	/**
	 * 根据事件编码加载对应的意见信息
	 * 
	 * @param bean
	 * @return
	 */
	public AuditOpinionDTO getAuditOpinionDTOByProblemNo(AuditOpinionDTO bean) {

		AuditOpinionDTO auditOpinionDTO = (AuditOpinionDTO) this._getObject(
				"opinoin.getOpinoin", bean);
		return auditOpinionDTO;
	}

	/**
	 * 根据事件编码加载对应的意见信息
	 * 
	 * @param bean
	 * @return
	 */
	public AuditOpinionDTO getOpinion(AuditOpinionDTO bean) {
		AuditOpinionDTO auditOpinionDTO = (AuditOpinionDTO) this._getObject(
				"opinoin.getAuditOpinoin", bean);
		return auditOpinionDTO;
	}

	/**
	 * 根据事件编码加载对应的意见信息opinoin.getOpinoincase
	 * 
	 * @param bean
	 * @return
	 */
	public AuditOpinionDTO getOpinionDto(AuditOpinionDTO bean) {
		AuditOpinionDTO auditOpinionDTO = (AuditOpinionDTO) this._getObject(
				"opinoin.getOpinoincase", bean);
		return auditOpinionDTO;
	}

	/**
	 * 根据意见id修改意见信息
	 * 
	 * @param bean
	 * @return
	 */
	public void updateOpinion(AuditOpinionDTO bean) {
		this._update("opinoin.updateOpinoin", bean);
	}

	/**
	 * 根据意见id修改意见信息
	 * 
	 * @param bean
	 * @return
	 */
	public void updateProblemOpinion(AuditOpinionDTO bean) {
		this._update("opinoin.updateProblemOpinoin", bean);
	}

	/**
	 * 根据意见id修改意见信息
	 * 
	 * @param bean
	 * @return
	 */
	public void updateProblem(AuditOpinionDTO bean) {
		this._update("opinoin.updateProblem", bean);
	}

	/**
	 * 根据意见类型，编码和任务类型查询意见信息对象
	 * 
	 * @param bean
	 * @return
	 */
	public AuditOpinionDTO queryOpionionDTO(AuditOpinionDTO bean) {
		List<AuditOpinionDTO> list = (List<AuditOpinionDTO>) this
				._queryForList("opinoin.queryAuditOpinoinByParameter", bean);
		if (list != null && list.size() > 0) {
			return list.get(0);
		} else {
			return null;
		}
	}

	/**
	 * 根据意见类型、任务编码和任务类型，查看对应的意见
	 * 
	 * @param bean
	 * @return
	 */
	public AuditOpinionDTO getOpinionByType(AuditOpinionDTO bean) {
		AuditOpinionDTO auditOpinionDTO = (AuditOpinionDTO) this._getObject(
				"opinoin.getOpinoinByType", bean);
		return auditOpinionDTO;
	}

	/**
	 * 根据意见类型、任务编码和任务类型，查看对应的意见
	 * 
	 * @param bean
	 * @return
	 */
	public int getOpinionCount(AuditOpinionDTO bean) {
		int count = this._getInt("opinoin.getOpinionCount", bean);
		return count;
	}
}
